#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include "arvoreb.h"

int main(int argc,char * argv[])
{
   /* ----------------------------------------------------------------------
      Declaracoes e inicio para verificacao do uso da memoria dinamica.
      ---------------------------------------------------------------------- */
   struct mallinfo info = mallinfo();
   int MemDinInicial = info.uordblks, MemDinFinal;
   /* ---------------------------------------------------------------------- */

	int opcao, i, nalunos, ordem, ra;
	arvoreb *arv;
	FILE *fp = stdin;
	aluno a;
	
	fscanf(fp,"%d\n",&ordem);

	arv = arvoreb_cria(ordem);	//cria arvore B de ordem defenida pela entrada

	fscanf(fp,"%d\n",&nalunos);
	for (i=0;i<nalunos;i++){
	    fscanf(fp,"%d ",&(a.ra));
	    fgets(a.nome,64,fp);
	    arvoreb_insere(&arv,a);	//insere aluno em arvore
	}

	fscanf(fp,"%d\n",&opcao);
	if(opcao==0)
	    arvoreb_imprime_arv(arv);	//imprime toda arvore
	else for(i=0;i<opcao;i++){
	    fscanf(fp,"%d\n",&ra);
	    arvoreb_consulta(arv,ra);	//consulta nome em arvore pelo ra
	}

	arvoreb_destroi(&arv);		//destroi arvore

   /* --------------------------------------------------------------------- */
   /* Verificacao final do uso da memoria dinamica                          */
   /* --------------------------------------------------------------------- */
   info = mallinfo();
   MemDinFinal = info.uordblks;
   if (MemDinInicial!=MemDinFinal)
      printf("\n\nMemoria dinamica nao foi totalmente liberada (%d, %d)\n",
	     MemDinInicial,MemDinFinal);
   /* --------------------------------------------------------------------- */

	return 0;
}

